#ifndef __LED_CONTROL_H__
#define __LED_CONTROL_H__

#include <LNM8F01.h>
#include "key_contorl.h"

//==================== LED灯带控制模块 ====================

// LED灯带组枚举
// 用于区分两组独立的LED灯带（PA4/PA7）
typedef enum {
    LED_STRIP_0 = 0, // PA4控制的LED灯带
    LED_STRIP_1      // PA7控制的LED灯带
} led_strip_enumType_t;

// 颜色结构体
// 用于描述RGB三色分量，范围0~255
typedef struct {
    uint8_t red;    // 红色分量
    uint8_t green;  // 绿色分量
    uint8_t blue;   // 蓝色分量
} led_color_t;

// LED灯带参数结构体
// 用于描述一组灯带的所有控制参数
typedef struct {
    uint8_t quantity;              // 灯珠数量（即灯带长度）
    speed_level_enumType_t speed;  // 速度档位（影响动态模式速度）
    mode_enumType_t mode;          // 工作模式（常亮/闪烁/呼吸/流水/流星雨）
    uint8_t colorIndex;            // 颜色索引(1-10)，用于查找预设颜色表
} led_strip_param_t;

//=========================================================

// 初始化LED灯带模块
// 必须在主循环前调用，完成IO/寄存器配置
void init_led_control(void);

// 刷新两组灯带显示（需周期性调用，建议10ms周期）
// 根据当前参数和模式自动刷新灯带效果
void update_led_control(void);

// 设置指定灯带参数（本项目两组参数始终同步，strip参数可忽略）
void set_led_strip_param(led_strip_enumType_t strip, const led_strip_param_t *paramPtr);

// 获取指定灯带参数（本项目两组参数始终同步，strip参数可忽略）
void get_led_strip_param(led_strip_enumType_t strip, led_strip_param_t *paramPtr);

// 设置指定灯带颜色（直接输出指定颜色，忽略当前模式）
void set_led_strip_color(led_strip_enumType_t strip, led_color_t color);

// 通过按键同步两组灯带参数（数量、速度、模式、颜色）
void sync_led_param_from_key(void);

#endif
